package com.it.jdbc;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

/**
 * jdbc连接数据库的入门程序
 *1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
 * 	1.复制mysql-connector-java-5.1.37-bin.jar到项目的lib目录下
 * 	2.右键-->Add As Library
 * 2. 注册驱动(安装驱动)
 * 3. 获取数据库连接对象 Connection
 * 4. 定义sql
 * 5. 获取执行sql语句的对象 Statement
 * 6. 执行sql，接受返回结果
 * 7. 处理结果
 * 8. 释放资源
 * 注意：在使用数据库的驱动包的时候,需要引入对应版本的包  5.xx引入5.xx的版本  8.0引入8.0的版本
 * //sql注入
 * sql = "select * from account"+"where 1=1  and id = 1 and name=";
 * sql = "update account set name = ? where id = ?"
 */
public class JdbcDemo01 {
    public static void main(String[] args) throws Exception {

        //1.先注册mysql的驱动
        //DriverManager.registerDriver(new Driver());
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取数据库的连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql04", "root", "root");
        //3.定义要执行的sql
        String sql = "insert into account values(null,'周迅',3000)";
        //String sql = “delect from account  where id = 7”
        //4.获取执行sql语句的对象
        //在创建连接的时候使用的执行sql对象  对象的区别在于 是否防止sql注入,恶意的拼接sql
        //PreparedStatement preparedStatement = connection.prepareStatement();
        Statement statement = connection.createStatement();
        //在collection中也是开启事务的类
        connection.setAutoCommit(false);
        //6.执行sql,接收返回的结果
        try{
            int flag = statement.executeUpdate(sql);
            //7.处理返回结果
            System.out.println(flag);
            //事务手动提交
            connection.commit();
        }catch (Exception e){
            e.printStackTrace();
            connection.rollback();
        }
        //8.释放数据库连接的资源
        statement.close();
        connection.close();
    }
}
